package com.example.agent_springai.util;

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Random;

public class RandomTimeGenerator {
    // 总时间范围的起始点和结束点
    private static final LocalDateTime TOTAL_START = LocalDateTime.of(2024, 11, 13, 16, 12, 0);
    private static final LocalDateTime TOTAL_END = LocalDateTime.of(2024, 11, 13, 16, 59, 38);

    // 随机生成的起止时间
    public static final LocalDateTime start = generateStartTime();
    public static final LocalDateTime end = generateEndTime(start);

    /**
     * 生成随机开始时间（在总时间范围内）
     */
    private static LocalDateTime generateStartTime() {
        Random random = new Random();
        // 计算总时间范围内的总秒数
        long totalSeconds = ChronoUnit.SECONDS.between(TOTAL_START, TOTAL_END);
        // 随机生成开始时间（确保有足够空间生成满足间隔的结束时间）
        long maxStartSeconds = totalSeconds - 25; // 预留至少25秒给结束时间
        long randomStartSeconds = random.nextLong(maxStartSeconds + 1);
        return TOTAL_START.plusSeconds(randomStartSeconds);
    }

    /**
     * 生成随机结束时间（在总时间范围内且与开始时间间隔>24秒）
     */
    private static LocalDateTime generateEndTime(LocalDateTime startTime) {
        Random random = new Random();
        // 计算开始时间到总结束时间的剩余秒数
        long remainingSeconds = ChronoUnit.SECONDS.between(startTime, TOTAL_END);
        // 随机生成结束时间（至少比开始时间晚25秒）
        long minEndSeconds = 25;
        long randomEndSeconds = minEndSeconds + random.nextLong(remainingSeconds - minEndSeconds + 1);
        return startTime.plusSeconds(randomEndSeconds);
    }

}